import { app, BrowserWindow } from 'electron';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径（替代__dirname）
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 确保只有一个应用实例在运行
const gotTheLock = app.requestSingleInstanceLock();

if (!gotTheLock) {
  app.quit();
} else {
  app.on('second-instance', (event, commandLine, workingDirectory) => {
    // 当运行第二个实例时，聚焦到主窗口
    if (mainWindow) {
      if (mainWindow.isMinimized()) mainWindow.restore();
      mainWindow.focus();
    }
  });

  let mainWindow;

  function createWindow() {
    // 创建浏览器窗口
    mainWindow = new BrowserWindow({
      width: 800,
      height: 600,
      webPreferences: {
        nodeIntegration: true,
        contextIsolation: false,
        preload: path.join(__dirname, 'preload.js')
      },
      title: '游戏应用',
      icon: path.join(__dirname, '../public/favicon.ico')
    });

    // 加载Vue应用
    // 始终加载构建后的文件，避免依赖开发服务器
    mainWindow.loadFile(path.join(__dirname, '../dist/index.html'));
    // 如果需要开发模式，可以使用以下代码：
    // mainWindow.loadURL('http://localhost:5173');

    // 打开开发者工具
    // mainWindow.webContents.openDevTools();

    // 窗口关闭事件
    mainWindow.on('closed', function() {
      mainWindow = null;
    });
  }

  // 应用准备就绪后创建窗口
  app.whenReady().then(() => {
    createWindow();

    app.on('activate', function() {
      if (BrowserWindow.getAllWindows().length === 0) createWindow();
    });
  });

  // 关闭所有窗口时退出应用（Windows & Linux）
  app.on('window-all-closed', function() {
    if (process.platform !== 'darwin') app.quit();
  });
}